package com.jrx.anytxn.param.service.product;

import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.param.dto.product.PrPrepaymentFeeReq;
import com.jrx.anytxn.param.dto.product.PrPrepaymentFeeRes;
import com.jrx.anytxn.param.dto.product.PrPreterminationFeeTableReq;
import com.jrx.anytxn.param.dto.product.PrPreterminationFeeTableRes;

/**
 * 提前还款手续费 业务接口
 *
 * @author yx
 * @date 2019/4/30
 */
public interface IPrPrepaymentFeeService {
    /**
     * 根据租户ID分页查询提前还款手续费参数信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.common.data.TxnPage<com.jrx.anytxn.param.dto.product.PrPrepaymentFeeRes>
     * @author fan.yang
     * date: 2019/10/14 0014 下午 13:57
     */
    TxnPage<PrPrepaymentFeeRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;

    /**
     * 添加提前结清费参数
     *
     * @param prPrepaymentFeeReq 提前还款手续费请求实体
     * @return com.jrx.anytxn.param.dto.product.PrPrepaymentFeeRes
     * @author fan.yang
     * date: 2019/10/14 0014 下午 14:06
     */
    PrPrepaymentFeeRes addPrPrepaymentFee(PrPrepaymentFeeReq prPrepaymentFeeReq) throws TxnException;

    /**
     * 更新提前还款手续费参数
     *
     * @param prPrepaymentFeeReq 提前还款手续费参数入参对象
     * @return PrPrepaymentFeeRes 提前还款手续费参数响应参数
     * @throws TxnException
     */
    PrPrepaymentFeeRes modifyPrPrepaymentFee(PrPrepaymentFeeReq prPrepaymentFeeReq) throws TxnException;

    /**
     * 通过租户ID和费用表ID删除提前还款手续费参数
     *
     * @param tenantId 租户ID
     * @param feeId    费用表ID
     * @return java.lang.Boolean
     * @author fan.yang
     * date: 2019/10/14 0014 下午 14:05
     */
    Boolean removeByTenIdAndFeeId(String tenantId, String feeId) throws TxnException;

    /**
     * 通过租户ID和费用表ID查询提前还款手续费参数
     *
     * @param tenantId 租户ID
     * @param feeId    提前结清费用表ID
     * @return com.jrx.anytxn.param.dto.product.PrPrepaymentFeeRes
     * @author fan.yang
     * date: 2019/10/14 0014 下午 13:53
     */
    PrPrepaymentFeeRes findByTenIdAndFeeId(String tenantId, String feeId) throws TxnException;

    /**
     * 根据提前还款表ID（prepaymentFeeId）及机构信息查询提前还款手续费信息
     *
     * @param prepaymentFeeId
     * @param orgId
     * @throws TxnBizException
     * @return: com.jrx.anytxn.param.dto.product.PrPrepaymentFeeRes
     * @Date: 2019/8/6
     **/
    PrPrepaymentFeeRes findByPrepaymentFeeId(String prepaymentFeeId, String orgId, String tenantId) throws TxnBizException;
}
